GitHubリポジトリの招待が大量に届いてもまとめて承諾できる。そう、GitHub APIならね
こんにちは。サービスグループの武田です。
ある日GitHubのプライベートリポジトリへの招待メールが大量に届いていたら、みなさんはどうしますか?とりあえずひとつずつメールを開いて承諾していくでしょうか。
※画像はイメージです。
もちろんそれでもいいんですが、ひたすら同じ作業を繰り返すのはあまり好きでないです。楽できないかなーと調べていたらちょうどいいAPIがありました。今回はこれを使ってみましょう。
Repository Invitations | GitHub Developer Guide
環境
次のような環境で検証をしました。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.14.3 BuildVersion: 18D109 $ jq -V jq-1.5 $ curl -V curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.4 zlib/1.2.11 nghttp2/1.24.1 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy $ echo $BASH_VERSION 4.4.23(1)-release
GitHubのパーソナルアクセストークンを取得
まずはGitHub APIをたたくための準備です。GitHubでの認証方式はいくつか提供されていますが、今回は推奨されているOAuth2トークンを利用してみます。
まずブラウザからGitHubにログインし、右上の自分のアイコンをクリックして、[Settings]を選択します。
次にサイドメニューから[Developer settings]を選択します。
画面が切り替わったら、サイドメニューの[Personal access tokens]を選択し、次に右側の[Generate new token]を押下します。
次の画面では、認可するスコープを選択します。今回はリポジトリへの招待を承諾するだけですので、 repo:invite のみでOKです。Token descriptionにはわかりやすい概要を書いておきましょう。
上記項目が埋められたら、画面下にスクロールして[Generate token]を押下します。
トークンが表示されたら忘れずにメモしておきます。なおトークンは、再生成は可能ですが再取得はできません。
GitHub APIを使用してまとめて承諾
GitHub APIのアクセストークンが取得できましたので、あとはAPIをたたいて承諾するだけです。次のようなコマンドを実行しましょう。
GITHUB_API_ENDPOINT_REPO_INVITE=https://api.github.com/user/repository_invitations GITHUB_AUTH_TOKEN=xxx #取得したアクセストークンに置き換えてください curl -s -H "Authorization: token ${GITHUB_AUTH_TOKEN}" "$GITHUB_API_ENDPOINT_REPO_INVITE" \ | jq '.[].id' \ | xargs -I{} curl -s -X PATCH -H "Authorization: token ${GITHUB_AUTH_TOKEN}" "${GITHUB_API_ENDPOINT_REPO_INVITE}/{}"
やっていることは単純です。/user/repository_invitations
をGETでたたいて招待一覧を取得し、jq
で招待idだけを取り出し、あとは取り出した招待idをPATCHで順番に承諾していきます。ページングには対応していませんので、実行後に未承諾の招待がないかを確認しておくといいでしょう。
curl -s -H "Authorization: token ${GITHUB_AUTH_TOKEN}" "$GITHUB_API_ENDPOINT_REPO_INVITE"
これで承諾したリポジトリにアクセスできるはずです。実際にアクセスを試してみてください。
後片付けも忘れずに
これでやりたかったことは終わりです。使用したトークンはおそらく使う予定もないはずですので、消しておきましょう。アクセストークンのページに表示されているトークン一覧から、今回作成したトークンの[Delete]ボタンを押下します。
本当に消していいのか確認されますので、間違っていないか確認したうえでボタンを押下します。
これで一仕事おしまいです。
さいごに
ある日GitHubのプライベートリポジトリへの招待メールが大量に届いていてももう大丈夫。解決方法は見つかります。そう、Developers.IOならね。